package com.starters.redisson.config;

import java.util.concurrent.TimeUnit;

/**
 * TODO: 分布式锁接口
 *
 * @author wuyijie
 * @date 2022/2/13 12:21 AM
 */
public interface IDistributedLocker {
    /**
     * TODO:
     *
     * @author wuyijie
     * @date 2022/2/13 12:21 AM
     * @param key 锁，key
     */
    void lock(String key);
    /**
     * TODO:
     *
     * @author wuyijie
     * @date 2022/2/13 12:22 AM
     * @param key key 锁，key
     * @throws InterruptedException 异常
     */
    void tryLock(String key) throws InterruptedException;

    /**
     * TODO: 加锁
     *
     * @author wuyijie
     * @date 2022/2/13 12:22 AM
     * @param key key 锁，key
     * @param timeout 超时时间
     * @param timeUnit 超时时间单位
     */
    void lock(String key, int timeout, TimeUnit timeUnit);

    /**
     * TODO: 解开锁
     *
     * @author wuyijie
     * @date 2022/2/13 12:22 AM
     * @param key 锁，key
     */
    void unLock(String key);
}
